import type { DefaultConfigType,ConfigType,ResType} from "./requesttype"

export default class HttpClient {
	default:DefaultConfigType = {
		baseURL:'',
		header:{},
	}//网络请求配置
	constructor(config:DefaultConfigType){//实例化的时候自动执行
	    this.default = {
			// ...this.default,
			...config
		} 
	}
	//发起网络请求的通用方法
	request(config:ConfigType){
		//config提供的url有两种情况
		if(config.url&&!config.url.startsWith('http')){//处理非http打头的url
			config.url = this.default.baseURL+config.url
		}
		return new Promise((resolve,reject)=>{
			uni.request({
				url:config.url,//确保此处url是http打头的完整地址
				method:config.method||'GET',
				header:{
					...this.default.header
				},
				data:config.data,
				success:(res:any)=>{
					resolve(res)
				},
				fail:(err)=>{
					reject(err)
				}
			})
		})
	}
	
	get(url:string){
		return this.request({url,method:"GET"})
	}
	post(url:string,data:any){
		return this.request({url,method:'POST',data})
	}
}
